
/**
 * @file salle.h
 * @brief Fichier d'entête du module UE.
 *
 * @author Mohammad NOROUZZADEH, Lotfi, Saleh
 */

#ifndef _SALLE_H
#define _SALLE_H


/* ********************************************************************* */
/*                                                                       */
/*                       Librairies de Salle                                */
/*                                                                       */
/* ********************************************************************* */
#include    <stdio.h>
#include    <stdlib.h>
#include <assert.h>
#include    "Chemin.h"
#include    "UtilStr.h"

/* ********************************************************************* */
/*                                                                       */
/*                        Définitions de types                           */
/*                                                                       */
/* ********************************************************************* */

/**
 * @struct sSalle
 * @brief Structure utilisée pour la gestion d'une sSalle.
 *
 * Cette structure est utilisée pour gérer .Les champs de cette structures
   doivent être modifiés ou lus par les accesseurs et mutateurs.
 */
struct sSalle
{
    int numSalle;
    char*	intitule;
};

/**
 * @typedef Salle
 * @brief Redéfinit la structure sSalle
 */
typedef	struct sSalle Salle;

/**
 * @fn void initSalle(Salle*salle,int numSalle,char* intitule);
 * @brief Initialise un salle.

 * @param[in, out] salle.
 * @param[in] numSalle.
 * @param[in] intitule.
 * @return 0 si tout est OK
 */
void initSalle(Salle*salle,int numSalle,char* intitule);

/**
 * @fn Salle * creSalle(int numSalle,char* intitule);
 * @brief Crée un salle en mémoire.

 * @param[in] numSalle
 * @param[in] intitule
 * @return un pointeur vers un salle
 */
Salle * creSalle(int numSalle,char* intitule);


/**
 * @fn void detSalle(Salle ** salle);
 * @brief Détruit une salle en mémoire.

 * @param[in, out] ue Pointeur vers l'salle.
 * @return 0 si tout est OK
 */
void detSalle(Salle ** salle);

/**
 * @fn void saveSalle(Salle*salle);
 * @brief saveSalle
 *
 * @param[in] salle .

 * @return 0 si tout est OK.
 */
void saveSalle(Salle*salle);

/**
 * @fn void mdfSalle(Salle*salle,Salle*sallenew);
 * @brief mdfSalle
 *
 * @param[in] salle .
 * @param[in] sallenew .

 * @return 0 si tout est OK.
 */
void mdfSalle(Salle*salle,Salle*sallenew);

/**
 * @fn int supSalle(Salle*salle);
 * @brief supSalle
 *
 * @param[in] salle .
 * @param[in] sallenew .

 * @return 0 si tout est OK.
 * @return -1 si non.
 */
int supSalle(Salle*salle);

/**
 * @fn Salle*   recSalleParCode(int numSalle);
 * @brief recSalleParCode
 *
 * @param[in] numSalle .

 * @return une Salle.
 */
Salle*   recSalleParCode(int numSalle);

#endif
